import { TODO_DEL, TODO_CHANGE_DONE, TODO_ADD, TODO_CHECK_ALL, TODO_MODIFY_NAME, TODO_CLEAR_DONED } from "../constants"

// 定义reducer
const initState = [
  {
    id: 1,
    name: '吃饭',
    done: false
  },
  {
    id: 2,
    name: '睡觉',
    done: false
  },
  {
    id: 3,
    name: '写代码',
    done: true
  },
]
export default function todo(preState = initState, action) {
  const { type, data } = action
  switch (type) {
    case TODO_DEL:
      return preState.filter(item => item.id !== data)
    case TODO_CHANGE_DONE:
      /* return preState.map(item => {
        if (item.id === data) {
          return {
            ...item,
            done: !item.done
          }
        } else {
          return item
        }
      }) */
      return preState.map(item => item.id === data ? { ...item, done: !item.done } : item)
    case TODO_ADD:
      return [data, ...preState]
    case TODO_CHECK_ALL:
      return preState.map(item => ({ ...item, done: data }))
    case TODO_MODIFY_NAME:
      return preState.map(item => item.id === data.id ? { ...item, name: data.name } : item)
    case TODO_CLEAR_DONED:
      return preState.filter(item => !item.done)
    default:
      return preState
  }
}